package main

import (
	"fmt"
	"strconv"
)

func main() {

	// 整型与整型的转换
	// var a int8 = 20
	// var b int16 = 40
	// fmt.Println(int16(a)+b)

	// 浮点和浮点之间的转换
	// var a float32 = 20.23
	// var b float64 = 40.45
	// fmt.Println(float64(a)+b)

	// 整型和浮点型之间的转换
	// var a int = 20
	// var b float32 = 2.3
	// a2 := float64(a)
	// b2 := int(b)
	// fmt.Printf("%v - %T, %v - %T", a2, a2, b2, b2)

	// 为了防止溢出，建议低位往高位转

	// 其他类型转换成string类型
	// 1. 通过fmt.Sprintf(); 2. 使用strconv包
	// var f float32 = 20.231313
	// str2 := strconv.FormatFloat(float64(f), 'f', 4, 32)
	// fmt.Printf("%v -- %T\n", str2, str2)

	// a := 'a'
	// str3 := strconv.FormatUint(uint64(a), 10)
	// fmt.Printf("%v -- %T\n", str3, str3)

	// string类型转换为其他类型, 失败则返回0
	// str := "123456"
	// num, _ := strconv.ParseInt(str, 10, 64)
	// fmt.Printf("%v -- %T", num, num)
	
	// str1 := "14.313156"
	// num, _ := strconv.ParseFloat(str1, 64)
	// fmt.Printf("%v -- %T", num, num)
}